Enabling operator controls for machine operation

ABSTRACT

A plurality of operator controls can, in an operation mode, operate a machine, and, in a validation mode, be disabled to operate the machine and selectable to provide inputs for a candidate key. A computing device can initialize the validation mode, including initializing the candidate key and, according to a number base, and a maximum storage length, of a stored key, an input multiplier; receive a plurality of inputs to the operator controls in the validation mode; determine respective numeric values of the inputs; add the candidate key to a product of the multiplier and the numeric value of a first input to update the candidate key; for each of one or more second inputs to the operator controls after the first input to the operator controls, determine whether the candidate key matches a stored key; and upon determining that the candidate key matches the stored key, output an authorization.

BACKGROUND

There are many types of machines for which it may be desirable tocontrol user access. For example, even if a vehicle is unlocked and/or auser is able to obtain access to the vehicle, the user is typicallyrequired to complete further steps before the vehicle will move, e.g.,actuating a vehicle ignition or the like with a key, key fob, or otheraccess control. Similarly, an industrial machine such as a stationaryrobot, tooling machine, etc., may be located in an environmentaccessible by many users, but it may be desirable to restrict use of themachine to a smaller set of users than the set of users to whom themachine is physically accessible.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example authorization system.

FIG. 2 illustrates an example process for capturing a calibration keyand generating and storing a stored key.

FIG. 3 illustrates an example process for authorizing operation of amachine.

DETAILED DESCRIPTION

Referring to FIG. 1 , disclosed herein is a control system 100 forcontrolling, i.e., restricting or allowing, i.e., determiningauthorization of user access to, and/or operation of, a machine. Theauthorization can be performed via inputs to operator controls 108. Inan exemplary implementation, the machine is a vehicle 102; non-limitingexamples of operator controls 108 in a vehicle 102 implementationinclude any one or more of a turn signal selector, a cruise controlselector, a headlamp actuator, a gear selector, a brake control, athrottle control, a steering control, a climate control, a mirrorcontrol, a window control, or a lock control. In other words, theoperator controls 108 typically include controls or input mechanismsthat are provided for conventional operation of the machine, i.e., theoperator controls 108 are enabled, in an operation mode, to operate themachine.

For example, a computer 104 in a vehicle 102 could require that anoperation mode be enabled or activated, wherein operator controls 108typically are enabled to provide various inputs to support the operationmode, in order for an operator to provide inputs (e.g., to operatorcontrols 108 such as a steering wheel, accelerator pedal, etc.) to movethe vehicle. In a validation mode provided to determine userauthorization, the operator controls 108 are disabled to operate themachine (i.e., the operation mode is disabled or unavailable) and areselectable to provide inputs for a candidate key. That is, in thevalidation mode, inputs to the operator controls 108 are used to obtainthe candidate key that can then be compared to a stored key and used todetermine whether to output the authorization allowing control andoperation of the machine.

A machine as described herein comprises a plurality of operator controlsenabled, in an operation mode, to operate the machine, and, in thevalidation mode, disabled to operate the machine and selectable toprovide inputs for a candidate key. The machine further includes acomputing device communicatively coupled to the operator controls,wherein the computing device is programmed to: initialize the validationmode, including initializing the candidate key and an input multiplier,wherein the input multiplier is initialized according to a number base,and a maximum storage length, of a stored key; receive a plurality ofinputs to the operator controls in the validation mode; determinerespective numeric values of the inputs; add the candidate key to aproduct of the multiplier and the numeric value of a first input toupdate the candidate key; for each of one or more second inputs to theoperator controls after the first input to the operator controls,determine whether the candidate key matches a stored key; and upondetermining that the candidate key matches the stored key, output anauthorization.

The machine can be further configured to activate one or more componentsof the machine upon the authorization being output.

The computing device can be further programmed to exit the validationmode without outputting the authorization upon determining that morethan a predetermined amount of time has elapsed without receiving one ofthe inputs.

The computing device can be further programmed to exit the validationmode without outputting the authorization upon determining that thecandidate key does not match the stored key, and a count of theplurality of inputs matches a number of expected inputs.

The number base can be determined by a number of possible inputs for asingle position of the stored key.

The stored key can be based on a plurality of calibration inputsprovided in a calibration mode. The calibration inputs can be receivedin a predetermined subset of the operator controls included in themachine. The stored key can be downloaded to the computing device. Thestored key can include padding to account for a difference between astorage length of an expected number of inputs and the maximum storagelength.

The computing device can be programed to clear the candidate key inmemory upon determining to exit the validation mode.

The machine can be a vehicle. The computing device can be an electroniccontrol unit in the vehicle. The operator can control include at leastone of a turn signal selector, a cruise control selector, a headlampactuator, a gear selector, a brake control, a throttle control, asteering control, a climate control, a mirror control, a window control,or a lock control. The vehicle can be permitted to move only when in theoperation mode.

An example vehicle 102 includes an authorization computer 104 that isone of a plurality of computing devices included in the vehicle 102.Computing devices in the vehicle 102 can receive data via a vehiclenetwork 106 from various devices and/or systems in the vehicle 102, suchas operator controls 108 and vehicle 102 sensors 110. Further, thevehicle 102 includes a plurality of vehicle subsystems 112, including abraking subsystem 114, a propulsion subsystem 116, a steering subsystem118, and/or a human machine interface (HMI) 120; these vehiclesubsystems 112 are typically arranged on the vehicle network 106 forcommunication with computing devices such as the computer 104.

A vehicle 102 may be any suitable type of ground vehicle 102, e.g., apassenger or commercial automobile such as a sedan, a coupe, a truck, asport utility, a crossover, a van, a minivan, a taxi, a bus, etc.Further, a vehicle 102 herein could be a boat or aircraft. Moreover, asnoted above, the present principles could be implemented in machinesother than vehicles 102.

The vehicle 102 computer 104 includes a processor and a memory. Thememory includes one or more forms of computer 104 readable media, andstores instructions executable by the vehicle 102 computer 104 forperforming various operations, including as disclosed herein. Forexample, the computer 104 can be a generic computer 104 with a processorand memory as described above and/or may include an electronic controlunit (ECU) or controller for a specific function or set of functions,and/or a dedicated electronic circuit including an ASIC that ismanufactured for a particular operation, e.g., an ASIC for processingsensor data and/or communicating the sensor data. In another example,computer 104 may include an FPGA (Field-Programmable Gate Array) whichis an integrated circuit manufactured to be configurable by a user.Typically, a hardware description language such as VHDL (Very High SpeedIntegrated Circuit Hardware Description Language) is used in electronicdesign automation to describe digital and mixed-signal systems such asFPGA and ASIC. For example, an ASIC is manufactured based on VHDLprogramming provided pre-manufacturing, whereas logical componentsinside an FPGA may be configured based on VHDL programming, e.g. storedin a memory electrically connected to the FPGA circuit. In someexamples, a combination of processor(s), ASIC(s), and/or FPGA circuitsmay be included in a computer 104.

The memory can be of any type, e.g., hard disk drives, solid statedrives, servers, or any volatile or non-volatile media. The memory canstore the collected data sent from the sensors 110. The memory can be aseparate device from the computer 104, and the computer 104 can retrieveinformation stored by the memory via a vehicle network 106, i.e., one ormore communications mechanisms in the vehicle 102 for components in thevehicle 102 to communicate with one another, e.g., over a CAN bus, awireless network, etc. Alternatively or additionally, the memory can bepart of the computer 104, e.g., as a memory of the computer 104. Thecomputer 104 may include programming to operate one or more of vehicle102 brakes, propulsion (e.g., control of acceleration in the vehicle 102by controlling one or more of an internal combustion engine, electricmotor, hybrid engine, etc.), steering, climate control, interior and/orexterior lights, etc., as well as to determine whether and when thecomputer 104, as opposed to a human operator, is to control suchoperations. Additionally, the computer 104 may be programmed todetermine whether and when a human operator is to control suchoperations.

The computer 104 may include or be communicatively coupled to, e.g., viaa vehicle network 106 such as a communications bus as described furtherbelow, more than one processor, e.g., included in components such assensors 110, electronic controller units (ECUs) or the like included inthe vehicle 102 for monitoring and/or controlling various vehicle 102components, e.g., a powertrain controller, a brake controller, asteering controller, etc. The computer 104 is generally arranged forcommunications on a vehicle 102 communication network that can include abus in the vehicle 102 such as a controller area network (CAN) or thelike, and/or other wired and/or wireless mechanisms. Alternatively oradditionally, in cases where the computer 104 actually comprises aplurality of devices, the vehicle 102 communication network may be usedfor communications between devices represented as the computer 104 inthis disclosure. Further, as mentioned below, various controllers and/orsensors 110 may provide data to the computer 104 via the vehicle 102communication network.

The vehicle network 106 can include a conventional vehicle 102communications bus such as a CAN bus, LIN bus, etc., and or other wiredand/or wireless technologies, e.g., Ethernet, Wi-Fi®, cellular,Bluetooth®, Bluetooth® Low Energy (BLE), etc. Via the network, bus,and/or other wired or wireless mechanisms (e.g., a wired or wirelesslocal area network in the vehicle 102). Accordingly, a vehicle 102computer 104, ECU etc., may transmit messages to various devices in avehicle 102 and/or receive messages from the various devices, e.g.,ECUs, controllers, actuators, sensors 110, etc.

The braking subsystem 114 resists the motion of the vehicle 102 tothereby slow and/or stop the vehicle 102. The braking subsystem 114 mayinclude friction brakes such as disc brakes, drum brakes, band brakes,and so on; regenerative brakes; any other suitable type of brakes; or acombination. The braking subsystem 114 is in communication with andreceives input from the computer 104 and/or a human operator. The humanoperator may control the braking subsystem 114 via, e.g., a brake pedal.

The propulsion subsystem 116 may include one or more of an internalcombustion engine, electric motor, hybrid engine, etc.

The steering subsystem 118 controls the turning of the wheels. Thesteering subsystem 118 is in communication with and receives input froma steering wheel and/or the computer 104. The steering subsystem 118 mayinclude a rack-and-pinion system with electric power-assisted steering,a steer-by-wire system, e.g., such as are known, or any other suitablesystem.

The vehicle 102 can include an HMI 120 (human-machine interface), e.g.,one or more of a display, a touchscreen display, a microphone, aspeaker, etc. The user can provide input to devices such as the computer104 via the HMI 120. The HMI 120 can communicate with the computer 104via the vehicle network 106, e.g., the HMI 120 can send a messageincluding the user input provided via a touchscreen, microphone, acamera that captures a gesture, etc., to a computer 104, and/or candisplay output, e.g., via a screen, speaker, etc.

The authorization computer 104, as mentioned above, can becommunicatively coupled to the operator controls 108, e.g., via thevehicle network 106. An operator control in the context of this documentis a physical element in a vehicle (e.g., a button, knob, switch, etc.)whose state can be changed by a user (e., a button can be pressed, aknob can be pressed and/or turned, a switch can be moved, etc.). Anoperator control is typically provided for conventional vehicleoperations, e.g., activating or deactivating lights, cruise control,etc. The authorization computer can receive inputs from operatorcontrols 108 via the vehicle network 106, i.e., signals or data messagesspecifying that the input has been received. For example, an input froman operator control 108 can specify that a state of the operator control108, such as a position of a knob, switch, or lever, has changed and/ora description of a current state of the operator control 108 (e.g.,cruise on/off switch is on, turn signal lever is in up position, etc.).A non-limiting list of example operator controls 108 in a vehicle 102includes a turn signal selector, a cruise control selector, a headlampactuator, a gear selector, a brake control, a throttle control, asteering control, a climate control, a mirror control, a window control,or a lock control.

As stated above, the operator controls 108 can be used to input acandidate key. Thus, specific inputs to operator controls 108 can bemapped to or assigned to a range of numbers (specifically, non-negativeintegers) where the range of numbers is defined by a base number of astored key. For example, the base number could be three, in which casethe range of numbers represented in inputs to operator controls 108would be zero to two (i.e., 0, 1, 2). In another example, the basenumber could be ten, in which case the range of numbers represented ininputs to operator controls 108 would be zero to nine (i.e., 0, 1, 2, 3,4, 5 6, 7, 8, 9). Table 1 below shows a possible mapping of operatorcontrols 108 where a stored key is represented as a base three number.Table 2 below shows a possible mapping of operator controls 108 where astored key is represented as a base ten number.

TABLE 1 Control input Assigned value Turn signal stalk up 0 Turn signalstalk down 1 Turn signal stalk pulled toward vehicle rear 2

TABLE 2 Control input Assigned value Empty (i.e., no input) 0 Cancel 1Off 2 On 3 On/Off 4 On/Off/Cancel 5 Resume 6 Resume/Cancel 7 Set-minus 8Set-plus 9

Note that Table 2 includes various inputs that would not be included ina vehicle 102 together, and also provides for a placeholder in acalibration key to specify that no input will be received, i.e.,typically used where a user entering a calibration key provides fewerinputs than the permitted number of inputs, whereupon the “empty” valuecan be included, typically as trailing right padding. That is, a numberbased for a stored key could be determined by a distinct number ofdifferent inputs possible in a specific vehicle 102 (or type of vehicle102), e.g., as is possible with the inputs illustrated in Table 1.However, as illustrated in Table 2, a number based for a stored keycould be determined by a distinct number of different inputs possibleacross a plurality of vehicles 102 (or types of vehicle 102), Wherein nospecific vehicle 102 would include all of the possible inputs used todetermine the base number. That is, for example, a single vehicle 102could have a cruise control that would include either “Off” and “On”controls, or would include an “On/Off” control, but would not includeall of these. In any event, the number base for a stored key isdetermined by a number of possible inputs for a single position of thestored key, i.e., a range of numbers possible for the position (two forbase two, three for base three, etc.).

As described further below, in what is referred to as a calibrationmode, a user could provide input to determine a stored key, whereuponand the key could be stored, along with a base number for the keytypically provided by a vehicle 102 manufacture according to the controlinputs permitted for the stored key. Further, the authorization computer104 will typically include a maximum amount of memory for a stored key,and will store a maximum length for a stored key based on the maximumamount of memory. Thus, to obtain a stored key, a calibration keyentered by a user key is padded, typically with trailing zeros, asneeded to achieve a stored key of the maximum length. That is, a storedkey typically includes padding to account for a difference between astorage length of an expected number of inputs and the maximum storagelength. For example, suppose in a calibration mode where a key was to bestored as a base 10 number, a user entered the string “04543.”Previewing the discussion of Table 3 below, further suppose that themaximum length for a stored key was 9 digits of a base 10 number. Thenthe calibration key entered by a user would be padded to form a storedkey of a maximum length of nine, i.e., “045430000.”

Examples herein will assume that the maximum amount of memory is 32bits, but of course other amounts of memory could be provided. In anyevent, the maximum length is determined by determining a maximum numberof digits in the number base that can be stored in the available maximummemory. Table 3 below provides examples of maximum lengths of storedkeys with 32 bits of memory is available.

TABLE 3 Number Largest number that Max base can be stored in base 2Length Base 2 11111111111111111111111111111111 32 Base 3102002022201221111210 20 Base 10 4,294,967,295 9

In a base two system, given 32 bits, as seen in Table 3, the largestnumber that can be stored is a string of 32 ones, i.e.,11111111111111111111111111111111. This number in base 3 is102002022201221111210, i.e., a string of 21 digits, and is 4,294,967,295in base 10, i.e., a string of 10 digits. However, the maximum length inbase three for a stored key in this example is 20 digits, and ninedigits in base 10. This is because, in each case, 32 bits of memory isnot enough to store a full range of possible digits, i.e., number valuesfor the leftmost digit in the string. For example, 32 bits of memorywould not be enough to store 2020020222012211112103 or 5,294,967,295₁₀(the subscripts indicating base 3 and base 10, respectively).

The authorization computer 104 can be programmed to initialize avalidation mode in which the operator controls 108 are disabled tooperate the vehicle 102 and are selectable to input a candidate key thatcan be used to determine user authorization for the machine.Initializing the validation mode includes initializing a candidate keyvalue and an input multiplier, wherein the input multiplier isinitialized according to a number base, and a maximum storage length, ofa stored key value. In the exemplary implementation discussed herein,the candidate key value is a hash value, i.e., a value returnedaccording to a specified mathematical function to obtain a desiredvalue, i.e., a number that can be used to obtain a match with a storedkey. The number base is typically a stored value determined according toa number of possible inputs to form a stored key, as described abovewith respect to Tables 2 and 3. The input multiplier, which is appliedto inputs forming the candidate key as described further below, can bethe number base raised to a power determined based on the maximumstorage length of the key value, i.e., the input multiplier is typicallyinitialized as the number base raised to the maximum storage length 1minus 1, i.e., where n is the number base and 1 is the maximum storagelength, the multiplier m is given as follows:m=n ^(i-1)

The input multiplier is then adjusted and applied during variousiterations of a process in a validation mode, as described furtherbelow.

Once the validation mode is initialized, the authorization computer 104can, in the validation mode, receive a plurality of inputs to theoperator controls 108. The computer 104 can store numeric valuesassigned to respective operator controls 108 and/or states of or inputsto operator controls 108, e.g., based on an assignment or mapping asdescribed above. Thus, on receiving respective inputs to operatorcontrols 108, the computer 104 can determine numeric values of theinputs.

The candidate key can be initialized to a value of zero. Then, when anumeric value for a first input is determined, the candidate key can beadded to a product of the input multiplier and the numeric value of thefirst input. That is, if the candidate key is initialized to a value ofzero, after the first input then the candidate key is updated to theproduct of the input multiplier and the numeric value of the firstinput.

Subsequently, for each of one or more second inputs to the operatorcontrols 108 after the first input to the operator controls 108, thecandidate key is similarly updated. Further, after each second input,the authorization computer 104 can determine whether the candidate keymatches a stored key. It is possible that a stored key could be twodigits or even one digit. However, in practice, a stored key typicallywill be more than two digits to reduce a likelihood of an unauthorizeduser guessing the key. Upon determining that the candidate key matchesthe stored key, the computer 104 can output an authorization. An“authorization” means that the computer 104 has activated an operationmode in which one or more operator controls 108 can be activated toprovide input to operate a machine such as the vehicle 102. Put anotherway, the computer 104 providing the authorization means that thecomputer 104 has activated one or more components of the machine uponthe authorization being output.

Table 4 below illustrates an example of a candidate key being enteredand matched to a stored key based on inputs to operator controls 108 ina validation mode. In this example, the stored key is a base threenumber that is four digits long, specifically, the stored key in thisexample is “12120000000000000000,” i.e., the trailing zeros are paddingas described above and a user must enter a sequence 1-2-1-2 to match thestored key. In the example of Table 4, the candidate key is initializedto a value of zero, and the multiplier is initialized as 3{circumflexover ( )}19, i.e., the base number raised to a power one less than themaximum length of 20. As seen in Table 4, the multiplier is divided bythe base number, i.e., the power applied to the base number is reducedby one, to update the candidate key for each subsequent input.

TABLE 4 Input Input No. Value Multiplier Candidate Key First 1 3¹⁹ (1 ×3¹⁹)₁₀ + (0)₁₀ = (1162261467)₁₀ Second 2 3¹⁸ (2 × 3¹⁸)₁₀ +(1162261467)₁₀ = (1937102445)₁₀ Third 1 3¹⁷ (1 × 3¹⁷)₁₀ + (1937102445)₁₀= (206624268)₁₀ Fourth 2 3¹⁶ (2 × 3¹⁶)₁₀ + (2O662426O8)₁₀ =(2152336050)₁₀

Operations in Table 4 are shown with base 10 numbers for the convenienceof the reader, and also because such operations would probably be shownin base 10 in human-readable computer code programming the computer 104.Upon receiving a first input, having a value of “1,”, the initialmultiplier of 3¹⁹ is multiplied by the input value, and the product isthen added to the candidate key, i.e., in this first iteration, zero,that being the initialized value of the candidate key. Upon receivingthe second input, having a value of “2,” the multiplier, now 3¹⁸, ismultiplied by the input value, and the product is then added to thecandidate key to update the candidate key. This procedure is repeatedafter the third and fourth inputs. The computer 104 can compare thecandidate key to the stored key after each generation, i.e., afterreceiving each of the first, second, third, and fourth inputs. Upondetermining a match between the candidate key and the stored key, whichin this example will happen after the fourth input is received, (i.e.,121200000000000000003=2152336050₁₀), the computer 104 can then outputthe authorization.

The computer 104 can be programmed to exit the validation mode withoutoutputting the authorization upon determining that more than apredetermined amount of time has elapsed without receiving one of theinputs. Put another way, there can be a timeout period for enteringinputs to form a candidate key. For example, if more than five or tenseconds passes between inputs, the computer 104 could be programmed toexit the validation mode. Further, the computer 104 can be programmed toexit the validation mode without outputting the authorization upondetermining that the candidate key does not match the stored key, and acount of the plurality of inputs matches a number of expected inputs;the number of expected inputs can be stored in the computer 104, e.g.,captured when a calibration key is entered.

FIG. 2 illustrates an example process for capturing a calibration keyand generating and storing a stored key. As mentioned above, the storedkey is based on a plurality of calibration inputs, i.e., a calibrationkey, provided in a calibration mode. The calibration inputs are receivedoperator controls 108 included in a machine such as a vehicle, typicallyin a predetermined subset of operator controls 108 designated formapping to a stored key.

The process 150 can begin in a block 152, in which the computer 104initializes the calibration mode. For example, the computer 104 mayreceive user input to begin the calibration mode. User input could beprovided, e.g., via an HMI 120 or the like in a vehicle 102. The usercould provide input to begin a calibration mode and/or enter a passcodeor the like to be compared to a stored passcode in a memory of thecomputer 104 to permit activating the calibration mode.

Next, in a block 154, the computer 104 identifies a set of inputs tooperator controls 108 that could be used to generate a stored key. Forexample, the computer 104 could store available operator controls 108,and states of operator controls 108, as described above, available toreceive inputs for user entry of digits forming a key. Alternatively oradditionally, an operator could provide input, e.g., via a vehicle 102HMI 120, specifying a set of operator controls 108 to be used to receiveinputs for the key being stored.

Next, in a block 156, the computer 104 selects a number base for thekey. As described above, the number base is selected according to anumber of possible inputs to enter a fee.

Note that the blocks 154 and 156 could be omitted. That is, the computer104 could be provided with the set of inputs to operator controls 108that could be used to generate the stored key by a manufacturer of amachine such as a vehicle 102, the stored key could be downloaded to thecomputer 104 via a communication module 122, etc. In that case, a numberof inputs and a number base for a key could be stored in the computer104 memory.

Next, in a block 158, the computer 104 captures inputs for a calibrationkey. For example, a vehicle 102 HMI 120 could provide prompts for a userto provide various inputs to operator controls 108. The HMI 120 couldprovide output to a user specifying a number of inputs to be providedand/or a user can provide input to the HMI 120 specifying a number ofinputs to be provided, a number of inputs corresponding to a number ofdigits that a user will have to input for a candidate key to match bestored key. The computer 104 could then receive the inputs, e.g., theuser could perform a sequence of inputs to operator controls 108, e.g.,selecting buttons, switches, knobs, etc. in a vehicle 102, to specifythe inputs, and hence the digits, to be included in a stored key.

Next, in a block 160, the computer 104 pads the calibration key asdescribed above, and stores the padded key in a memory.

Following the block 160, the process 150 ends.

FIG. 3 illustrates an example process for authorizing operation of amachine.

The process 170 can be executed by a processor of the computer 104according to instructions stored in a memory thereof.

The process 170 can begin in a block 172, in which a validation mode isinitialized. The computer 104 can receive input to initialize thevalidation mode in various ways. For example, in a vehicle 102, avalidation mode could be initialized when a vehicle 102 door is opened,when an occupancy sensor detects a user in a vehicle 102 seat when thevehicle 102 is in an off state (i.e., an operation mode is disabled), auser provides an input to initiate the validation mode when the vehicle102 is in the off state, e.g., selecting an operator control 108 used toprovide input for a candidate key, etc.

Next, in a block 174, the computer 104 determines whether an input hasbeen received to an operator control 108, e.g., by monitoring during atimeout. As described above. If an input is received, then the process170 proceeds to a block 176. Otherwise, the process 170 proceeds to ablock 184.

In the block 176, the computer 104 re-computes the candidate key value,i.e., as initialized in the block 172, or as recomputed in a previousiteration of the block 176. For example, re-computing the candidate keyvalue is illustrated by and discussed above with respect to Table 4.

Next, in a block 178, the computer 104 determines whether the candidatekey output from the block 176 matches a stored key, e.g., as describedabove. If no, the process 170 proceeds to a block 180. If yes, theprocess 170 proceeds to a block 182.

In the block 180, the computer 104 determines whether another input isexpected to form a candidate key that can be compared to a stored key,e.g., based on a stored number of expected digits, a number of digits ina stored key (accounting for padding), etc. if another input isexpected, then the process 170 returns to the block 174. Otherwise, theprocess 170 proceeds to the block 184.

In the block 182, the candidate key having matched the stored key, thecomputer 104 outputs an authorization, e.g., to enable an operationmode, to permit user access to one or more components of a vehicle 102,etc.

In the block 184, which can follow either of the blocks 174, 180, 184,the computer 104 determines to exit the validation mode and clears thecandidate key value and other initialized values, such as themultiplier, from memory. Following the block 184, the process 170 ends.

Computer executable instructions may be compiled or interpreted fromcomputer programs created using a variety of programming languagesand/or technologies, including, without limitation, and either alone orin combination, Java™, C, C++, Visual Basic, Java Script, Perl, HTML,etc. In general, a processor (e.g., a microprocessor) receivesinstructions, e.g., from a memory, a computer readable medium, etc., andexecutes these instructions, thereby performing one or more processes,including one or more of the processes described herein. Suchinstructions and other data may be stored and transmitted using avariety of computer 104 readable media. A file in a networked device isgenerally a collection of data stored on a computer readable medium,such as a storage medium, a random access memory, etc. A computerreadable medium includes any medium that participates in providing data(e.g., instructions), which may be read by a computer. Such a medium maytake many forms, including, but not limited to, non volatile media,volatile media, etc. Non volatile media include, for example, optical ormagnetic disks and other persistent memory. Volatile media includedynamic random access memory (DRAM), which typically constitutes a mainmemory. Common forms of computer readable media include, for example, afloppy disk, a flexible disk, hard disk, magnetic tape, any othermagnetic medium, a CD ROM, DVD, any other optical medium, any otherphysical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASHEEPROM, any other memory chip or cartridge, or any other medium fromwhich a computer can read.

The term “exemplary” is used herein in the sense of signifying anexample, e.g., a reference to an “exemplary widget” should be read assimply referring to an example of a widget.

Use of “in response to,” “based on,” and “upon determining” hereinindicates a causal relationship, not merely a temporal relationship.

In the drawings, the same reference numbers indicate the same elements.Further, some or all of these elements could be changed. With regard tothe media, processes, systems, methods, etc. described herein, it shouldbe understood that, although the steps of such processes, etc. have beendescribed as occurring according to a certain ordered sequence, unlessindicated otherwise or clear from context, such processes could bepracticed with the described steps performed in an order other than theorder described herein. Likewise, it further should be understood thatcertain steps could be performed simultaneously, that other steps couldbe added, or that certain steps described herein could be omitted. Inother words, the descriptions of processes herein are provided for thepurpose of illustrating certain embodiments, and should in no way beconstrued so as to limit the claimed invention.

The disclosure has been described in an illustrative manner, and it isto be understood that the terminology which has been used is intended tobe in the nature of words of description rather than of limitation. Manymodifications and variations of the present disclosure are possible inlight of the above teachings, and the disclosure may be practicedotherwise than as specifically described. The present invention isintended to be limited only by the following claims.

The invention claimed is:
 1. A machine, comprising: a plurality ofoperator controls enabled, in an operation mode, to operate the machine,and, in a validation mode, disabled to operate the machine andselectable to provide inputs for a candidate key; a computing devicecommunicatively coupled to the operator controls, wherein the computingdevice is programmed to: initialize the validation mode, includinginitializing the candidate key and an input multiplier, wherein theinput multiplier is initialized according to a number base, and amaximum storage length, of a stored key; receive a plurality of inputsto the operator controls in the validation mode; determine respectivenumeric values of the inputs; add the candidate key to a product of themultiplier and the numeric value of a first input to update thecandidate key; for each of one or more second inputs to the operatorcontrols after the first input to the operator controls, determinewhether the candidate key matches the stored key; and upon determiningthat the candidate key matches the stored key, output an authorization.2. The machine of claim 1, further configured to activate one or morecomponents of the machine upon the authorization being output.
 3. Themachine of claim 1, wherein the computing device is further programmedto exit the validation mode without outputting the authorization upondetermining that more than a predetermined amount of time has elapsedwithout receiving one of the inputs.
 4. The machine of claim 1, whereinthe computing device is further programmed to exit the validation modewithout outputting the authorization upon determining that the candidatekey does not match the stored key, and a count of the plurality ofinputs matches a number of expected inputs.
 5. The machine of claim 1,wherein the number base is determined by a number of possible inputs fora single position of the stored key.
 6. The machine of claim 1, whereinthe stored key is based on a plurality of calibration inputs provided ina calibration mode.
 7. The machine of claim 6, wherein the calibrationinputs are received in a predetermined subset of the operator controlsincluded in the machine.
 8. The machine of claim 1, wherein the storedkey is downloaded to the computing device.
 9. The machine of claim 1,wherein the stored key includes padding to account for a differencebetween a storage length of an expected number of inputs and the maximumstorage length.
 10. The machine of claim 1, wherein the computing deviceis further programed to clear the candidate key in memory upondetermining to exit the validation mode.
 11. The machine of claim 1,wherein the machine is a vehicle.
 12. The machine of claim 11, whereinthe computing device is an electronic control unit in the vehicle. 13.The machine of claim 11, wherein the operator controls include at leastone of a turn signal selector, a cruise control selector, a headlampactuator, a gear selector, a brake control, a throttle control, asteering control, a climate control, a mirror control, a window control,or a lock control.
 14. The machine of claim 11, wherein the vehicle ispermitted to move only when in the operation mode.